#ifndef DATAMODULE_H_
#define DATAMODULE_H_

#include <cstring>
#include <map>

#include "../Rom.h"
#include "../EbFuncs.h"

class DataModule {
  public:
    virtual ~DataModule() {};
    virtual const char* getName() = 0;	// Get the name of what the module does, ie: "Don't Care Names"
    virtual const char* getCredits() = 0;	// Returns who wrote the module

    virtual void readFromRom(Rom& rom) = 0;
    virtual void writeToRom(Rom& rom) = 0;

    virtual void readFromDat(char* dirName, std::map<std::string, std::string> &fns, std::map<std::string, int> &labels) = 0;
    virtual void writeToDat(char* dirName, std::map<std::string, std::string> &fns) = 0;
};

#endif
